package com.it.nongchanping.controller;

import com.it.nongchanping.entity.Company;
import com.it.nongchanping.service.CompanyService;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.multipart.MaxUploadSizeExceededException;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

/**
 * 全局控制器建言
 * 这个类会为所有 @RequestMapping 方法的 Model 添加公共属性
 */
@ControllerAdvice
public class GlobalControllerAdvice {

    @Autowired
    private CompanyService companyService;

    /**
     * 将公司信息添加到全局模型中，供所有视图（如页脚）使用
     * @return 公司信息实体
     */
    @ModelAttribute("companyInfo")
    public Company getCompanyInfo() {
        Company company = companyService.getCompanyInfo();
        if (company == null) {
            // 如果数据库中没有公司信息，返回一个空对象，以避免模板中的空指针异常
            return new Company();
        }
        return company;
    }

    /**
     * 将当前请求的URI添加到全局模型中，用于导航栏高亮
     * @param request 当前的HTTP请求
     * @return 当前请求的URI字符串
     */
    @ModelAttribute("currentUri")
    public String getCurrentUri(HttpServletRequest request) {
        return request.getRequestURI();
    }

    @ExceptionHandler(MaxUploadSizeExceededException.class)
    public String handleMaxSizeException(RedirectAttributes redirectAttributes) {
        redirectAttributes.addFlashAttribute("error", "文件上传失败：文件大小不能超过10MB。");
        return "redirect:/admin/gallery";
    }
} 